home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2009 October / SAN CD 10-2009 CD-ROM 53.iso / pc / system / gdbPopup.dxr / 00009_textBox_hyperlinkManager.ls < prev    next >
Encoding:
Text File  |  2009-06-29  |  2.3 KB  |  72 lines

  1. property pTextColor, pHyperlinkColor
  2.  
  3. on parseHyperlinks me, aString
  4.   if stringp(aString) then
  5.     clearExistingHyperlinks(me)
  6.     outputString = aString
  7.     linkData = []
  8.     nextTagStart = offset("<a href=" & QUOTE, outputString)
  9.     repeat while nextTagStart > 0
  10.       openTagEnd = offset(QUOTE & ">", outputString)
  11.       tagData = outputString.char[nextTagStart + 9..openTagEnd - 1]
  12.       closeTagStart = offset("</a>", outputString)
  13.       preTagChunk = outputString.char[1..nextTagStart - 1]
  14.       tagChunk = outputString.char[openTagEnd + 2..closeTagStart - 1]
  15.       postTagChunk = outputString.char[closeTagStart + 4..outputString.char.count]
  16.       thisLinkData = [nextTagStart, nextTagStart + tagChunk.char.count, tagData]
  17.       linkData.add(thisLinkData)
  18.       outputString = preTagChunk & tagChunk & postTagChunk
  19.       nextTagStart = offset("<a href=" & QUOTE, outputString)
  20.     end repeat
  21.     myMember = sprite(me.spriteNum).member
  22.     myMember.text = outputString
  23.     myMember.color = rgb(pTextColor)
  24.     if linkData.count > 0 then
  25.       repeat with i = 1 to linkData.count
  26.         myMember.char[linkData[i][1]..linkData[i][2]].hyperlink = linkData[i][3]
  27.         myMember.char[linkData[i][1]..linkData[i][2]].color = rgb(pHyperlinkColor)
  28.       end repeat
  29.     end if
  30.   end if
  31. end
  32.  
  33. on clearExistingHyperlinks me
  34.   myMember = sprite(me.spriteNum).member
  35.   repeat while myMember.hyperlinks.count > 0
  36.     myMember.char[myMember.hyperlinks[1][1]..myMember.hyperlinks[1][2]].hyperlink = EMPTY
  37.   end repeat
  38. end
  39.  
  40. on mouseWithin me
  41.   if _global.engine.systemMode <> #admin then
  42.     if sprite(me.spriteNum).pointInHyperlink(_mouse.mouseLoc) then
  43.       cursor(280)
  44.     else
  45.       cursor(-1)
  46.     end if
  47.   end if
  48. end
  49.  
  50. on hyperlinkClicked me, theData, theRange
  51.   if (theData starts "http://") or (theData starts "mailto:") then
  52.     gotoNetPage(theData)
  53.   else
  54.     if theData starts "page_" then
  55.       _global.engine.gui.jumpToPage(symbol(theData))
  56.     else
  57.       if theData starts "gdb_" then
  58.         tell the stage
  59.           _global.engine.gdbManager.openGdbPopup(symbol(theData))
  60.         end tell
  61.       end if
  62.     end if
  63.   end if
  64. end
  65.  
  66. on getPropertyDescriptionList
  67.   desc = [:]
  68.   desc.addProp(#pTextColor, [#format: #string, #default: "#CCCCCC", #comment: "Text color"])
  69.   desc.addProp(#pHyperlinkColor, [#format: #string, #default: "#FFCC00", #comment: "Hyperlink color"])
  70.   return desc
  71. end
  72.